﻿<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true"
    CodeFile="Controls.aspx.cs" Inherits="Controls" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <link href="../Style/LessonsStyle.css" rel="stylesheet" type="text/css" />
    Контроли в WPF
    <br />
    Съдържание:<br />
    <ul>
        <li>Контроли в WPF</li>
        <li>Текстови контроли</li>
        <li>Бутони</li>
        <li>Лист контрола</li>
        <li>Меню </li>
        <li>Тоолбар</li>
    </ul>
    <div>
        <p>
            Контроли в WPF
        </p>
        <p>
            Контролите в WPF използват команди да представят поддържащите операции. Също така
            предоставят пропъртита които могат да променят тяхното поведение. Освен това могат
            да вдигат евенти когато нещо важно се случва с тях. Повечето от описаните контроли
            са стандартни за Windows.
        </p>
    </div>
    <div>
        <p>
            Текстови контроли
        </p>
        <p>
            Label<br />
            Целата на този контрол е да се предостави място за показване на някакво съдържание
            с access key.
            <table border="1">
                <tbody>
                    <tr>
                        <td>
                            <div class="Code">
                                &lt;Window x:Class=&quot;Label.LabelWindow&quot;<br />
                                xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;<br />
                                xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;<br />
                                Title=&quot;Label Demo&quot; Height=&quot;300&quot; Width=&quot;300&quot; Background=&quot;BurlyWood&quot;&gt;<br />
                                &lt;Grid&gt;<br />
                                &lt;Grid&gt;<br />
                                &lt;Label Target=&quot;{Binding ElementName=nameText}&quot; HorizontalAlignment=&quot;Left&quot;
                                Margin=&quot;16,120,0,116&quot; Width=&quot;46&quot;&gt;_Name&lt;/Label&gt;<br />
                                &lt;Label Target=&quot;{Binding ElementName=questText}&quot; Margin=&quot;0,120,97,115&quot;
                                HorizontalAlignment=&quot;Right&quot; Width=&quot;37&quot;&gt;_Quest&lt;/Label&gt;<br />
                                &lt;TextBox Margin=&quot;61,120,0,119&quot; Name=&quot;nameText&quot; HorizontalAlignment=&quot;Left&quot;
                                Width=&quot;57&quot; /&gt;<br />
                                &lt;TextBox HorizontalAlignment=&quot;Right&quot; Margin=&quot;0,120,41,119&quot;
                                Name=&quot;questText&quot; Width=&quot;57&quot; /&gt;<br />
                                &lt;/Grid&gt;<br />
                                &lt;/Grid&gt;<br />
                                &lt;/Window&gt;<br />
                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>
        </p>
        <p>
            TextBox<br />
            Това е контрол за редактиране на текст и неговото показване. Чрез пропъртито AcceptsReturns=
            true се позволява редактиране на повече от един ред.
        </p>
        <p>
            RichTextbox<br />
            Поддържа всички команди които са дефинирани в EditingCommand класа. Разпознава RTF
            формат и позволява поставянето на форматиран текст от IE и Word
            <table border="1">
                <tbody>
                    <tr>
                        <td>
                            <div class="Code">
                                &lt;Window x:Class=&quot;RichTextBox.RichTextBoxWindow&quot;<br />
                                xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;<br />
                                xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;<br />
                                Title=&quot;RichTextBox Demo&quot; Height=&quot;300&quot; Width=&quot;300&quot;&gt;<br />
                                &lt;TextBox SpellCheck.IsEnabled=&quot;True&quot; Width=&quot;150&quot; Height=&quot;160&quot;<br />
                                AcceptsReturn=&quot;True&quot; /&gt;<br />
                                &lt;/Window&gt;<br />
                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>
        </p>
    </div>
    <div>
        <p>
            Бутони</p>
        <p>
            Това е контола която потребитея може да натиска. Button наследява ButtonBase класа
            и така чрез атрибута Click в XAML може да се дефинира евент. Бутоните се разделят
            на няколко вида CheckButton и RadioButton и двата вида наследяват ButtonBase класа
            индиректрно чрез ToggleButton класа.<br />
            IsChecked - проверява дали бутона е чекнат от потребителя
            <br />
            CheckBox- това не е нищо повече от ToggleButton с различен вид.
            <br />
            RadioButtion- се използват в групи където само един от всичките може да бъде избран.
            <table border="1">
                <tbody>
                    <tr>
                        <td>
                            <div class="Code">
                                &lt;Window x:Class=&quot;RadioButton.RadioButtonWindow&quot;<br />
                                xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;<br />
                                xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;<br />
                                Title=&quot;RadioButton Demo&quot; Height=&quot;300&quot; Width=&quot;300&quot;&gt;<br />
                                &lt;StackPanel&gt;<br />
                                &lt;RadioButton GroupName=&quot;Fuel&quot; Margin=&quot;3&quot;&gt;Petrol&lt;/RadioButton&gt;<br />
                                &lt;RadioButton GroupName=&quot;Fuel&quot; Margin=&quot;3&quot;&gt;Diesel&lt;/RadioButton&gt;<br />
                                &lt;RadioButton GroupName=&quot;Induction&quot; Margin=&quot;3&quot;&gt;Unforced&lt;/RadioButton&gt;<br />
                                &lt;RadioButton GroupName=&quot;Induction&quot; Margin=&quot;3&quot;&gt;Mechanical
                                supercharger&lt;/RadioButton&gt;<br />
                                &lt;RadioButton GroupName=&quot;Induction&quot; Margin=&quot;3&quot;&gt;Turbocharger&lt;/RadioButton&gt;<br />
                                &lt;/StackPanel&gt;<br />
                                &lt;/Window&gt;<br />
                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>
        </p>
    </div>
    <div>
        <p>
            Лист контрола
        </p>
        <p>
            ComboBox<br />
            Позволява на потребителя да избере един от елемнт от падащият лист. Осевн това тази
            контрола може да съдържа и по-сложни елементи.
            <br />
            Основни евенти са: DropDownOpened, DropDownClosed
            <table border="1">
                <tbody>
                    <tr>
                        <td>
                            <div class="Code">
                                &lt;Window x:Class=&quot;ComboBox.ComboBoxWindow&quot;<br />
                                xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;<br />
                                xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;<br />
                                Title=&quot;ComboBox Demo&quot; Height=&quot;500&quot; Width=&quot;800&quot;&gt;<br />
                                &lt;ComboBox IsDropDownOpen=&quot;True&quot; IsEnabled=&quot;True&quot;&gt;<br />
                                &lt;StackPanel Orientation=&quot;Horizontal&quot; Margin=&quot;5&quot;&gt;<br />
                                &lt;Image Source=&quot;Imagesjessica.bmp&quot;/&gt;<br />
                                &lt;StackPanel Width=&quot;200&quot;&gt;<br />
                                &lt;TextBlock Margin=&quot;5,0&quot; FontSize=&quot;14&quot; FontWeight=&quot;Bold&quot;
                                <br />
                                VerticalAlignment=&quot;center&quot;&gt;Jessica Alba&lt;/TextBlock&gt;<br />
                                &lt;TextBlock Margin=&quot;5&quot; VerticalAlignment=&quot;center&quot; TextWrapping=&quot;Wrap&quot;&gt;<br />
                                Born in Pomona, California, on April 28, 1981, Jessica Alba and her family moved
                                to Biloxi, Mississippi, when she was an infant...<br />
                                &lt;/TextBlock&gt;<br />
                                &lt;/StackPanel&gt;<br />
                                &lt;/StackPanel&gt;<br />
                                &lt;StackPanel Orientation=&quot;Horizontal&quot; Margin=&quot;5&quot;&gt;<br />
                                &lt;Image Source=&quot;ImagesDeveloper.bmp&quot;/&gt;<br />
                                &lt;StackPanel Width=&quot;200&quot;&gt;<br />
                                &lt;TextBlock Margin=&quot;5,0&quot; FontSize=&quot;14&quot; FontWeight=&quot;Bold&quot;<br />
                                VerticalAlignment=&quot;center&quot;&gt;Addicted to ...&lt;/TextBlock&gt;<br />
                                &lt;TextBlock Margin=&quot;5&quot; VerticalAlignment=&quot;center&quot; TextWrapping=&quot;Wrap&quot;&gt;<br />
                                This is the professional developer<br />
                                &lt;/TextBlock&gt;<br />
                                &lt;/StackPanel&gt;<br />
                                &lt;/StackPanel&gt;<br />
                                &lt;/ComboBox&gt;<br />
                                &lt;/Window&gt;<br />
                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>
        </p>
        <p>
            TabContol<br />
            Това е доста полезна контролаза показване на голямо количесто информация последством
            различни табове. Всички табове се намират в горната част на контролата. TabStripPlacmet
            пропъртито дава възножност да се промени позицията на табовете напромер от ляво,
            дясно или на дъното на контролата.
        </p>
        <p>
            ListView и GridView<br />
            ListView наследява ListBox класа. Стандарнто използва ExtendedSelectionMode. Пропъртито
            View позволява да се персонализира изгледа по доста богат начин. Типа на това пропърти
            е от типа на абстрактния ViewBase клас<br />
            GridView класа разполага с пропърти Columns. GridViewColumn обекта позволява контрол
            върху поведението на хедарите на колоните. Също така колоните могат да бъдат пренареждани
            чрез drag adn drop технологията. Освен това могат и да се преоразмеряват runtime
            <table border="1">
                <tbody>
                    <tr>
                        <td>
                            <div class="Code">
                                &lt;Window x:Class=&quot;ListView.ListViewWindow&quot;<br />
                                xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;<br />
                                xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;<br />
                                Title=&quot;ListView Demo&quot; Height=&quot;300&quot; Width=&quot;300&quot;&gt;<br />
                                &lt;ListView ItemsSource=&quot;{x:Static Fonts.SystemFontFamilies}&quot;&gt;<br />
                                &lt;ListView.View&gt;<br />
                                &lt;GridView&gt;<br />
                                &lt;GridViewColumn Header=&quot;Name&quot;<br />
                                DisplayMemberBinding=&quot;{Binding Source}&quot; /&gt;<br />
                                &lt;GridViewColumn Header=&quot;Line Spacing&quot;<br />
                                DisplayMemberBinding=&quot;{Binding LineSpacing}&quot; /&gt;<br />
                                &lt;GridViewColumn Header=&quot;Sample&quot;&gt;<br />
                                &lt;GridViewColumn.CellTemplate&gt;<br />
                                &lt;DataTemplate&gt;<br />
                                &lt;TextBlock FontFamily=&quot;{Binding}&quot; FontSize=&quot;20&quot;<br />
                                Text=&quot;ABCDEFGabcdefg&quot; /&gt;<br />
                                &lt;/DataTemplate&gt;<br />
                                &lt;/GridViewColumn.CellTemplate&gt;<br />
                                &lt;/GridViewColumn&gt;<br />
                                &lt;/GridView&gt;<br />
                                &lt;/ListView.View&gt;<br />
                                &lt;/ListView&gt;<br />
                                &lt;/Window&gt;<br />
                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>
        </p>
        <p>
            TreeView<br />
            Представлява йерархичен изглед на данни. Всяка една даннна се представя като възел
            на дървото. Характерно свойство е че могат да се разширявта и свиват<br />
            Някои основни евенти: Expanded, Collapsed, Selected, Unselected.
        </p>
    </div>
    <div>
        <p>
            Меню
        </p>
        <p>
            Менюто в най-общ вид преставлява хоризонтално ориентиранс стек а елементи. Самото
            меню е изградено от MenuItem които реставляват вложените елементи. MenuItem е headered
            items control като Header е наи главният обект. Също така съдържа и пропъртита за
            персонализиране като например Icon, IsCheckable, InputGestureText. Също така може
            обработва и евенти или да присвоява команди.<br />
            Контекстното меню работи също като обикновенното меню но е с по - обикновен дизайн
            и съдържа само MenuItems и Separators. Подобен тип меню се използва когато е неободима
            допълнителна информация или действие за даден елелмент например right-click.
            <table border="1">
                <tbody>
                    <tr>
                        <td>
                            <div class="Code">
                                &lt;Window x:Class=&quot;Menu.MenuWindow&quot;<br />
                                xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;<br />
                                xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;<br />
                                Title=&quot;Menu Demo&quot; Height=&quot;300&quot; Width=&quot;300&quot;&gt;<br />
                                &lt;Menu&gt;<br />
                                &lt;MenuItem Header=&quot;_File&quot;&gt;<br />
                                &lt;StackPanel Orientation=&quot;Horizontal&quot;&gt;<br />
                                &lt;AccessText Foreground=&quot;Blue&quot;&gt;_New...&lt;/AccessText&gt;<br />
                                &lt;Ellipse Fill=&quot;Blue&quot; Width=&quot;40&quot; Height=&quot;15&quot; Margin=&quot;10,0&quot;
                                /&gt;<br />
                                &lt;/StackPanel&gt;<br />
                                &lt;MenuItem Header=&quot;_Open...&quot; InputGestureText=&quot;Ctrl+O&quot; /&gt;<br />
                                &lt;MenuItem Header=&quot;_Save&quot; InputGestureText=&quot;Ctrl+S&quot; /&gt;<br />
                                &lt;MenuItem Header=&quot;Sa_ve As...&quot; InputGestureText=&quot;Ctrl+V&quot;
                                /&gt;<br />
                                &lt;Separator /&gt;<br />
                                &lt;MenuItem Header=&quot;Page Se_tup...&quot; /&gt;<br />
                                &lt;MenuItem Header=&quot;_Print...&quot; Command=&quot;Print&quot; /&gt;<br />
                                &lt;Separator /&gt;<br />
                                &lt;MenuItem Header=&quot;E_xit&quot; /&gt;<br />
                                &lt;/MenuItem&gt;<br />
                                &lt;MenuItem Header=&quot;_Edit&quot;&gt;<br />
                                &lt;MenuItem Header=&quot;_Undo&quot; Command=&quot;Undo&quot; /&gt;<br />
                                &lt;MenuItem Header=&quot;_Redo&quot; Command=&quot;Redo&quot;/&gt;<br />
                                &lt;Separator /&gt;<br />
                                &lt;MenuItem Header=&quot;Cu_t&quot; Command=&quot;Cut&quot; /&gt;<br />
                                &lt;MenuItem Header=&quot;_Copy&quot; Command=&quot;Copy&quot; /&gt;<br />
                                &lt;MenuItem Header=&quot;_Paste&quot; Command=&quot;Paste&quot; /&gt;<br />
                                &lt;MenuItem Header=&quot;_Delete&quot; Command=&quot;Delete&quot; /&gt;<br />
                                &lt;Separator /&gt;<br />
                                &lt;MenuItem Header=&quot;Select _All&quot; Command=&quot;SelectAll&quot; /&gt;<br />
                                &lt;/MenuItem&gt;<br />
                                &lt;MenuItem Header=&quot;_Help&quot;&gt;<br />
                                &lt;MenuItem Header=&quot;Help _Topics&quot; /&gt;<br />
                                &lt;MenuItem Header=&quot;_About...&quot; /&gt;<br />
                                &lt;/MenuItem&gt;<br />
                                &lt;/Menu&gt;<br />
                                &lt;/Window&gt;<br />
                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>
        </p>
    </div>
    <div>
        <p>
            Тоолбар
        </p>
        <p>
            Чрез тоолбара се предоставя бърз достъп до често използвани операций. В WPF се поддържа
            тоолбар чрез ToolBarTray и ToolBar контролите.StatusBar наподобява меню. Той е лесен
            за употреба и често се позционира в дъното на прозореца.
            <table border="1">
                <tbody>
                    <tr>
                        <td>
                            <div class="Code">
                                &lt;Window x:Class=&quot;ToolBar.ToolBarWindow&quot;<br />
                                xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;<br />
                                xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;<br />
                                Title=&quot;ToolBar Demo&quot; Height=&quot;300&quot; Width=&quot;300&quot;&gt;<br />
                                &lt;ToolBarTray&gt;<br />
                                &lt;ToolBar&gt;<br />
                                &lt;Button&gt;<br />
                                &lt;Canvas Width=&quot;16&quot; Height=&quot;16&quot; SnapsToDevicePixels=&quot;True&quot;&gt;<br />
                                &lt;Polygon Stroke=&quot;Black&quot; StrokeThickness=&quot;0.5&quot;<br />
                                Points=&quot;2.5,1.5 9.5,1.5 12.5,4.5 12.5,15 2.5,15&quot;&gt;<br />
                                &lt;Polygon.Fill&gt;<br />
                                &lt;LinearGradientBrush StartPoint=&quot;1,1&quot; EndPoint=&quot;0.2,0.7&quot;&gt;<br />
                                &lt;GradientStop Offset=&quot;0&quot; Color=&quot;#AAA&quot; /&gt;<br />
                                &lt;GradientStop Offset=&quot;1&quot; Color=&quot;White&quot; /&gt;<br />
                                &lt;/LinearGradientBrush&gt;<br />
                                &lt;/Polygon.Fill&gt;<br />
                                &lt;/Polygon&gt;<br />
                                &lt;Polygon Stroke=&quot;Black&quot; Fill=&quot;DarkGray&quot; StrokeThickness=&quot;0.5&quot;<br />
                                StrokeLineJoin=&quot;Bevel&quot;<br />
                                Points=&quot;9.5,1.5 9.5,4.5 12.5,4.5&quot; /&gt;<br />
                                &lt;/Canvas&gt;<br />
                                &lt;/Button&gt;<br />
                                &lt;Button&gt;<br />
                                &lt;Canvas Width=&quot;16&quot; Height=&quot;16&quot; &gt;<br />
                                &lt;Polygon Stroke=&quot;Black&quot; StrokeThickness=&quot;0.5&quot; Fill=&quot;Khaki&quot;<br />
                                SnapsToDevicePixels=&quot;True&quot;<br />
                                Points=&quot;0.5,14.5 0.5,4.5 1.5,3.5 6.5,3.5 8.5,5.5<br />
                                12.5,5.5 12.5,14.5&quot; /&gt;<br />
                                &lt;Polygon Stroke=&quot;Black&quot; SnapsToDevicePixels=&quot;True&quot;<br />
                                StrokeThickness=&quot;0.5&quot;<br />
                                Points=&quot;1.5,14.5 4.5,7.5 15.5,7.5 12.5,14.5&quot; &gt;<br />
                                &lt;Polygon.Fill&gt;<br />
                                &lt;LinearGradientBrush StartPoint=&quot;0.25,0&quot; EndPoint=&quot;0.5,1&quot;&gt;<br />
                                &lt;GradientStop Offset=&quot;0&quot; Color=&quot;#FF4&quot; /&gt;<br />
                                &lt;GradientStop Offset=&quot;1&quot; Color=&quot;#CA7&quot; /&gt;<br />
                                &lt;/LinearGradientBrush&gt;<br />
                                &lt;/Polygon.Fill&gt;<br />
                                &lt;/Polygon&gt;<br />
                                &lt;Path Stroke=&quot;Blue&quot; StrokeThickness=&quot;1&quot;<br />
                                Data=&quot;M 8,2 C 9,1 12,1 14,3&quot; /&gt;<br />
                                &lt;Polygon Fill=&quot;Blue&quot; Points=&quot;15,1 15.5,4.5 12,4&quot; /&gt;<br />
                                &lt;/Canvas&gt;<br />
                                &lt;/Button&gt;<br />
                                &lt;/ToolBar&gt;<br />
                                &lt;ToolBar&gt;<br />
                                &lt;Button&gt;Second toolbar&lt;/Button&gt;<br />
                                &lt;CheckBox IsChecked=&quot;True&quot;&gt;Choice&lt;/CheckBox&gt;<br />
                                &lt;/ToolBar&gt;<br />
                                &lt;/ToolBarTray&gt;<br />
                                &lt;/Window&gt;<br />
                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>
        </p>
    </div>
</asp:Content>
